package com.zb.entity;

import com.zb.enums.SmsCode;

/**
 * @Author WEN
 * @Date 2023/7/10 0010
 **/
public class Sms {
    private String regionId;
    /**
     * 短信签名名称。请在控制台签名管理页面签名名称一列查看。
     */
    private String signName;
    /**
     * 接收短信的手机号码。 支持对多个手机号码发送短信，手机号码之间以英文逗号（,）分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。
     */
    private String phoneNumbers;
    /**
     * 短信模板ID。请在控制台模板管理页面模板CODE一列查看。
     */
    private String templateCode;
    /**
     * 短信模板变量对应的实际值，JSON格式。
     */
    private String templateParam;
    /**
     * 上行短信扩展码，无特殊需要此字段的用户请忽略此字段
     */
    private String smsUpExtendCode;

    /**
     * 外部流水扩展字段。
     */
    private String outId;

    private Sms(){
        this.regionId = "cn-hangzhou";
        this.signName = "叮咚到家";
    }

    public static Sms sms(String templateCode, String receivePhone, String templateParam, String smsUpExtendCode, String outId) {
        Sms sms = new Sms();
        sms.setTemplateCode(templateCode);
        sms.setPhoneNumbers(receivePhone);
        sms.setTemplateParam(templateParam);
        sms.setSmsUpExtendCode(smsUpExtendCode);
        sms.setOutId(outId);
        return sms;
    }

    public static Sms sms(String templateCode, String receivePhone, String templateParam) {
        return sms(templateCode, receivePhone, templateParam, "", "");
    }

    /**
     * 短信验证码
     * @param receivePhone
     * @param code
     * @return
     */
    public static Sms verifCode(String receivePhone, String code) {
        return sms(SmsCode.VERIF_CODE.getCode(), receivePhone, "{\"code\":\"" + code + "\"}");
    }

    public static Sms writeOffCode(String receivePhone, String code) {
        return sms(SmsCode.VERIF_CODE.getCode(), receivePhone, "{\"code\":\"" + code + "\"}");
    }

    public String getRegionId() {
        return regionId;
    }

    public String getSignName() {
        return signName;
    }

    public String getPhoneNumbers() {
        return phoneNumbers;
    }

    public void setPhoneNumbers(String phoneNumbers) {
        this.phoneNumbers = phoneNumbers;
    }

    public String getTemplateCode() {
        return templateCode;
    }

    public void setTemplateCode(String templateCode) {
        this.templateCode = templateCode;
    }

    public String getTemplateParam() {
        return templateParam;
    }

    public void setTemplateParam(String templateParam) {
        this.templateParam = templateParam;
    }

    public String getSmsUpExtendCode() {
        return smsUpExtendCode;
    }

    public void setSmsUpExtendCode(String smsUpExtendCode) {
        this.smsUpExtendCode = smsUpExtendCode;
    }

    public String getOutId() {
        return outId;
    }

    public void setOutId(String outId) {
        this.outId = outId;
    }
}
